// 花样字类别
window.categories = window.categories || {};

// ASCII 艺术字库
const ASCII_LIBRARY = {
  // 可爱表情
  cute: [
    "(=^･ω･^=)",
    "(●'◡'●)",
    "(づ￣ 3￣)づ",
    "(˶ᵔ ᵕ ᵔ˶)",
    "(｡♥‿♥｡)",
    "(◕‿◕✿)",
    "(◕‿◕)",
    "(ﾉ◕ヮ◕)ﾉ*:･ﾟ✧"
  ],
  
  // 动作表情
  actions: [
    "(ง •_•)ง",
    "(╯°□°）╯︵ ┻━┻",
    "(ﾉ≧∇≦)ﾉ ﾐ ┸━┸",
    "(╥_╥)",
    "(╯°□°)╯︵ ʞooqǝɔɐɟ",
    "(ノಠ益ಠ)ノ彡┻━┻",
    "(ﾉ◕ヮ◕)ﾉ*:･ﾟ✧",
    "(ﾉ◕ヮ◕)ﾉ*:･ﾟ✧"
  ],
  
  // 动物
  animals: [
    "ʕ•ᴥ•ʔ",
    "(＾• ω •＾)",
    "(｡◕‿◕｡)",
    "(◕ᴥ◕)",
    "(＾• ω •＾)",
    "(◠‿◠✿)",
    "(◕‿◕✿)",
    "(◠‿◠)"
  ],
  
  // 特殊符号
  symbols: [
    "★~(◠‿◕✿)",
    "✿◕ ‿ ◕✿",
    "✖‿✖",
    "(｡♥‿♥｡)",
    "(◕‿-)",
    "(◠﹏◠✿)",
    "(◠‿◠)♡",
    "(◕‿◕✿)"
  ]
};

// 合并所有ASCII艺术字
const ALL_ASCII = [
  ...ASCII_LIBRARY.cute,
  ...ASCII_LIBRARY.actions,
  ...ASCII_LIBRARY.animals,
  ...ASCII_LIBRARY.symbols
];

// 随机获取ASCII艺术字
function getRandomAscii(count = 1) {
  const shuffled = [...ALL_ASCII].sort(() => 0.5 - Math.random());
  return count === 1 ? shuffled[0] : shuffled.slice(0, count);
}

// 按类别获取ASCII艺术字
function getAsciiByCategory(category, count) {
  const ascii = ASCII_LIBRARY[category] || [];
  if (!count || count >= ascii.length) return [...ascii];
  
  const shuffled = [...ascii].sort(() => 0.5 - Math.random());
  return shuffled.slice(0, count);
}

window.categories.ascii = {
  "id": "ascii",
  "name": "花样字",
  "layout": "grid",
  "itemSize": "l",
  "shuffle": true,
  "pageSize": 12,
  
  // 获取所有ASCII艺术字
  "getAllAscii": function() {
    return ALL_ASCII;
  },
  
  // 获取随机ASCII艺术字
  "getRandomAscii": getRandomAscii,
  
  // 按类别获取ASCII艺术字
  "getAsciiByCategory": getAsciiByCategory,
  
  // 获取所有类别
  "getCategories": function() {
    return Object.keys(ASCII_LIBRARY);
  },
  
  // 兼容旧版API
  "items": ALL_ASCII
};